<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">
                Téléchargement de vidéos Instagram
              </h1>
              <h2 class="sub c-fff f-18 fw400">
                Téléchargez des vidéos, des photos, des bobines, des histoires
                et IGTV Instagram Contenu en ligne
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/fr/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Téléchargeur de photos Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Entrez l'URL de la PHOTO Instagram ci-dessous
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/fr/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Télécharger les bobines Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Entrez l'URL des bobines Instagram ci-dessous
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/fr/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Téléchargement de l'histoire Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Entrez l'URL des histoires Instagram ci-dessous
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/fr/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Télécharger la vidéo IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Entrez l'URL Instagram IGTV ci-dessous
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>
                Récupération des données, veuillez patienter quelques secondes!
              </div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Le site ne peut pas traiter votre lien car il est privé
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Les données que vous avez saisies ne constituent pas un lien.
              Veuillez entrer un lien valide, pour exemple:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Toutes les fonctionnalités de Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta est compatible avec toutes les variétés de vidéos
              Instagram et des liens d'images.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/fr">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Téléchargeur de vidéos Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta est conçu pour vous permettre de télécharger le
                  vôtre contenu d'Instagram. Il offre un support pour le
                  téléchargement des deux vidéos individuelles et multiples
                  d'Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/fr/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Téléchargeur de photos Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Le téléchargeur de photos Instagram de Savinginsta le rend
                  sans effort pour enregistrer une ou plusieurs photos, y
                  compris des collages, d'Instagram. Avec cet outil, télécharger
                  des publications individuelles des images ou une collection de
                  photos Instagram est simple et direct.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/fr/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Télécharger les bobines Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Le téléchargeur Instagram Reels de Savinginsta vous permet de
                  téléchargez sans effort des vidéos Reels à partir de
                  publications Instagram vers votre appareil, offrant une
                  solution simple où Instagram lui-même n'offre aucun support
                  pour cette fonction.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/fr/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Téléchargeur IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  Les histoires Instagram offrent aux utilisateurs une
                  plate-forme distinctive pour partager leurs expériences
                  quotidiennes à travers des photos et des vidéos avec un large
                  public. Parfois, vous souhaiterez peut-être enregistrer un
                  favori story, mais cette fonctionnalité n'est pas disponible
                  dans l'application. Savinginsta résout ce problème en
                  fournissant une solution qui permet aux utilisateurs de
                  télécharger et de visualiser facilement des histoires
                  Instagram hors ligne, garantissant que le contenu mémorable ne
                  soit jamais perdu.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/fr/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Visionneuse d'histoires Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV propose des vidéos de longue durée, et si vous ne
                  parvenez pas à visualisez-les immédiatement, vous avez la
                  possibilité de les télécharger Vidéos IGTV sur votre PC. Cela
                  vous permet de facilement revisitez-les et profitez-en plus
                  tard, même sans Internet connexion et élimine les soucis
                  concernant le contenu IGTV étant supprimé ou indisponible.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Télécharger avec l'application Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Notre application offre une solution de téléchargement simple et
                rapide Vidéos Instagram, fournissant des vidéos de qualité HD
                sans filigranes.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - MEILLEUR OUTIL DE TÉLÉCHARGEMENT D'INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta se distingue comme un téléchargeur Instagram de
              premier plan, conçu de manière experte pour télécharger rapidement
              du contenu de haute qualité à partir de Instagram. Lorsque vous
              recherchez la méthode la plus efficace pour télécharger Média
              Instagram, le téléchargeur Savinginsta apparaît comme un leader
              solution tierce.
            </p>
            <p class="f-16 c-ccc">
              Instagram, reconnue comme l'application de partage de photos la
              plus populaire au monde, est témoin du téléchargement quotidien de
              millions de photos. Pour un tel moments, la nécessité d'un
              téléchargeur de vidéos Instagram devient évident, offrant une
              solution transparente pour vos besoins immédiats. Cet outil est
              indispensable à toute personne souhaitant préserver son contenu
              Instagram préféré de manière efficace.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Caractéristiques du téléchargeur de vidéos Instagram Savinginsta :
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Téléchargement de vidéos Instagram Rapide, facile et sûr.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Vous pouvez vous déconnecter de votre compte Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  D'un simple clic, vous pouvez télécharger des images Instagram
                  et des vidéos.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Téléchargez et enregistrez des images et des vidéos dans leur
                  version d'origine définition et qualité.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  À partir de comptes personnels, téléchargez et enregistrez des
                  vidéos Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Haute vitesse : à l'heure actuelle, Savinginsta propose le
                  service le plus rapide vitesses de téléchargement.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Comment utiliser Savinginsta Instagram Downloader pour
                enregistrer depuis IG
              </h3>
              <div class="note c-ccc f-16">
                Remarque : assurez-vous que la vidéo ou la photo Instagram que
                vous souhaitez le téléchargement s'effectue à partir d'un compte
                public.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Étape01:</span>
                  <span class="f-16 c-000"
                    >Copiez l'URL des photos et vidéos Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">
                    Sur l'application Instagram :
                  </div>
                  <div class="c-000 f-16">
                    Pour iOS : appuyez sur pour obtenir l'URL de la photo
                    Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Pour Android : cliquez au-dessus du message et sélectionnez
                    "Copier le URL Instagram », puis cliquez sur « Copier l'URL
                    de partage ». Le lien sera copié dans votre presse-papiers.
                  </div>
                  <div class="fw700 c-000 f-16">- Sur PC/Mac:</div>
                  <div class="c-000 f-16">
                    Faites un clic droit sur la date de la vidéo ou de la photo
                    Instagram et sélectionnez « Copier l'adresse du lien » pour
                    télécharger le contenu Instagram sur votre bureau.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Étape02:</span>
                  <span class="f-16 c-000">
                    Collez l'URL dans Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Accédez à Savinginsta.App - l'Instagram dédié
                     téléchargeur.
                  </div>
                  <div class="c-000 f-16">
                    Copiez et collez l'URL copiée dans le champ de texte donné.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Étape03:</span>
                  <span class="f-16 c-000">Lancer le téléchargement</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Cliquez sur le bouton "Télécharger" pour démarrer la vidéo Instagram ou
                     processus de téléchargement de photos.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Informations d'utilisation importantes
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta est conçu principalement pour télécharger des vidéos et
                     images de votre propre compte Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Nous accordons la priorité à la confidentialité des utilisateurs et nous réservons le droit de refuser
                     service si nos outils sont utilisés pour enfreindre les droits d'autrui
                     confidentialité ou pour accéder à du matériel non autorisé.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Pour une compréhension globale de nos politiques

              <a class="fw700 c-blue" href="/terms-of-service">
                veuillez lire nos conditions d'utilisation complètes ici.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Outils</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/fr/instagram-story-download"
                      >Téléchargeur d'histoires Instagram</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/fr/instagram-reels-video-download"
                      >Téléchargeur de bobines Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Téléchargeur Tiktok</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Soutien</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Contact </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Légal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Conditions d'utilisation
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> politique de confidentialité </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Nous ne sommes pas affiliés à Instagram ou Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "fr",
    },
    bodyAttrs: {
      "data-lang": "fr",
    },
    title:
      "Instagram Downloader - Téléchargez la vidéo Instagram en ligne - Savinginsta",
    meta: [
      { property: "og:locale", content: "fr" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta : téléchargez facilement des vidéos, des bobines et des photos Instagram avec notre outil convivial. Enregistrez vos vidéos Instagram rapidement et en toute sécurité sur n'importe quel appareil.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Téléchargez la vidéo Instagram en ligne - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Téléchargez la vidéo Instagram en ligne - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/fr" },

      {
        property: "og:description",
        content:
          "Savinginsta : téléchargez facilement des vidéos, des bobines et des photos Instagram avec notre outil convivial. Enregistrez vos vidéos Instagram rapidement et en toute sécurité sur n'importe quel appareil.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/fr" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Téléchargez la vidéo Instagram en ligne - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta : téléchargez facilement des vidéos, des bobines et des photos Instagram avec notre outil convivial. Enregistrez vos vidéos Instagram rapidement et en toute sécurité sur n'importe quel appareil.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/fr",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Téléchargez la vidéo Instagram en ligne - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta : téléchargez facilement des vidéos, des bobines et des photos Instagram avec notre outil convivial. Enregistrez vos vidéos Instagram rapidement et en toute sécurité sur n'importe quel appareil.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Qu'est-ce qu'un téléchargeur de vidéos Instagram ?`,
          content: `Un téléchargeur de vidéos Instagram est un outil Web conçu pour enregistrer des photos, des vidéos et du contenu IGTV Instagram pour une utilisation ultérieure. Savinginsta se distingue comme le premier choix pour télécharger sans effort du contenu depuis Instagram.`,
        },
        {
          title: `La connexion à mon compte Instagram est-elle nécessaire pour utiliser Savinginsta ?`,
          content: `Non, vous n'avez pas besoin de vous connecter à votre compte Instagram. Savinginsta garantit des téléchargements sécurisés et anonymes depuis Instagram sans nécessiter aucune information personnelle.`,
        },
        {
          title: `Puis-je enregistrer directement des vidéos depuis Instagram ?`,
          content: `Le téléchargement direct de vidéos à partir de votre flux Instagram ou des histoires d'autres personnes n'est pas possible via Instagram lui-même. Cependant, Savinginsta propose une solution simple. Visitez simplement leur site Web à l'adresse https:// savinginsta.com et suivez les instructions simples fournies.`,
        },
        {
          title: `Le service de téléchargement de vidéos et de photos Instagram est-il gratuit?`,
          content: `Oui, Savinginsta fournit ce service entièrement gratuitement, sans aucune limitation sur le nombre de téléchargements.`,
        },
        {
          title: `Puis-je télécharger du contenu à partir de comptes Instagram privés ?`,
          content: `En effet, Savinginsta permet de télécharger des vidéos, des stories et des photos depuis des comptes Instagram privés. Des instructions détaillées sont disponibles sur leur plateforme.`,
        },
        {
          title: `Est-il possible d'enregistrer des histoires Instagram?`,
          content: `Absolument. Avec Savinginsta, vous pouvez afficher et télécharger n'importe quelle histoire Instagram. Cliquez simplement sur les trois points (⁝) dans l'histoire, copiez le lien et collez-le dans Savinginsta pour lancer le téléchargement..`,
        },
        {
          title: `Savinginsta prend-il en charge les téléchargements sur les ordinateurs ?`,
          content: `Oui, Savinginsta est entièrement compatible avec les PC, vous permettant de télécharger des vidéos, des photos, des histoires Instagram et bien plus encore directement sur votre ordinateur.`,
        },
        {
          title: `Puis-je utiliser Savinginsta pour télécharger depuis Instagram sur des appareils Android ?`,
          content: `Certainement. Pour les utilisateurs d'Android, copiez simplement le lien de publication Instagram, collez-le dans Savinginsta et enregistrez. Pour plus de détails, consultez leur guide sur le téléchargement depuis Instagram sur Android.`,
        },
        {
          title: `Comment puis-je télécharger des vidéos et des photos Instagram sur iPhone/iPad (iOS) ?`,
          content: `Savinginsta a élaboré un guide convivial étape par étape pour télécharger différents types de vidéos sur votre iPhone ou iPad. Suivez ce lien pour obtenir des instructions : Téléchargez des vidéos Instagram sur iPhone.`,
        },
        {
          title: `Que se passe-t-il si la vidéo Instagram est lue au lieu d'être téléchargée ?`,
          content: `Pour résoudre ce problème, faites un clic droit sur la vidéo et sélectionnez « Enregistrer sous... » pour choisir l'emplacement de sauvegarde souhaité, plutôt que de cliquer avec le bouton gauche.`,
        },
        {
          title: `Où sont stockées les vidéos après le téléchargement ?`,
          content: `Les vidéos téléchargées sont généralement stockées dans le dossier « Téléchargements » sur les appareils mobiles Android et les PC.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
